今天講一下閉包,有關於閉包的用法:
宣告:
{(參數) -> 返回值 in
//你要做的事情
}
閉包其實跟func很像,簡單說他就是一個沒有名字的function,而且閉包可以當作一個Value來傳遞,function則不行
func寫法:
func sayhello (){
print("hello world")
}
sayhello()
閉包寫法:
let helloWorld = {(_ sayHello: String) -> String in
return sayHello
}
print(helloWorld("hello world"))
結果如下:
捕獲值:這部分說明的是一個閉包,可以從程式碼裡的上文跟下文,捕獲已經被我們定義過的變數,即使被定義過的變數的原作用區域已經不存在,閉包依然可以在函數裡面修改這些值,例如:
func Example(Increment add: Int) -> () -> Int {
var total = 0
func increment() -> Int {
total += add
return total
}
return increment
}
let addTen = Example(Increment: 10)
addTen()
addTen()
addTen()
let addFive = Example(Increment: 7)
addFive()
addFive()
addFive()
執行後如下: